<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Software regression</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Software_regression"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Software_regression rootpage-Software_regression skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Software regression</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p>A <b>software regression</b> is a type of <a href="Software_bug" title="Software bug">software bug</a> where a feature that has worked before stops working. This may happen after changes are applied to the software's <a href="Source_code" title="Source code">source code</a>, including the addition of new <a href="Software_feature" title="Software feature">features</a> and bug fixes.<sup id="cite_ref-wong-issre-97_1-0" class="reference"><a href="#cite_note-wong-issre-97-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> They may also be introduced by changes to the environment in which the software is running, such as system upgrades, <a href="Patch_(computing)" title="Patch (computing)">system patching</a> or a change to <a href="Daylight_saving_time" title="Daylight saving time">daylight saving time</a>.<sup id="cite_ref-ibm-locating-bugs_2-0" class="reference"><a href="#cite_note-ibm-locating-bugs-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> A <b>software performance regression</b> is a situation where the software still functions correctly, but performs more slowly or uses more memory or resources than before.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Various types of software regressions have been identified in practice, including the following:<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li><i>Local</i> – a change introduces a new bug in the changed module or component.</li>
<li><i>Remote</i> – a change in one part of the software breaks functionality in another module or component.</li>
<li><i>Unmasked</i> – a change unmasks an already existing bug that had no effect before the change.</li></ul>
<p>Regressions are often caused by <a href="Hotfix" title="Hotfix">encompassed bug fixes</a> included in <a href="Software_patch" class="mw-redirect" title="Software patch">software patches</a>. One approach to avoiding this kind of problem is <a href="Regression_testing" title="Regression testing">regression testing</a>. A properly designed <a href="Test_plan" title="Test plan">test plan</a> aims at preventing this possibility before releasing any software.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> <a href="Automated_testing" class="mw-redirect" title="Automated testing">Automated testing</a> and well-written <a href="Test_case" title="Test case">test cases</a> can reduce the likelihood of a regression.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Prevention_and_detection">Prevention and detection</h2></div>
<p>Techniques have been proposed that try to prevent regressions from being introduced into software at various stages of development, as outlined below.
</p>
<div class="mw-heading mw-heading3"><h3 id="Prior_to_release">Prior to release</h3></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Regression_testing" title="Regression testing">Regression testing</a></div>
<p>In order to avoid regressions being seen by the <a href="End-user" class="mw-redirect" title="End-user">end-user</a> after release, developers regularly run <a href="Regression_tests" class="mw-redirect" title="Regression tests">regression tests</a> after changes are introduced to the software. These tests can include <a href="Unit_tests" class="mw-redirect" title="Unit tests">unit tests</a> to catch local regressions as well as <a href="Integration_tests" class="mw-redirect" title="Integration tests">integration tests</a> to catch remote regressions.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Regression testing techniques often leverage existing test cases to minimize the effort involved in creating them.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> However, due to the volume of these existing tests, it is often necessary to select a representative subset, using techniques such as <a href="Regression_testing#Test_case_prioritization" title="Regression testing">test-case prioritization</a>.
</p><p>For detecting performance regressions, <a href="Software_performance_testing" title="Software performance testing">software performance tests</a> are run on a regular basis, to monitor the response time and resource usage metrics of the software after subsequent changes.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Unlike functional regression tests, the results of performance tests are subject to <a href="Variance" title="Variance">variance</a> - that is, results can differ between tests due to variance in performance measurements; as a result, a decision must be made on whether a change in performance numbers constitutes a regression, based on experience and end-user demands. Approaches such as <a href="Statistical_significance_test" class="mw-redirect" title="Statistical significance test">statistical significance testing</a> and <a href="Change_point_detection" class="mw-redirect" title="Change point detection">change point detection</a> are sometimes used to aid in this decision.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Prior_to_commit">Prior to commit</h3></div>
<p>Since <a href="Debugging" title="Debugging">debugging</a> and localizing the root cause of a software regression can be expensive,<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> there also exist some methods that try to prevent regressions from being committed into the <a href="Code_repository" class="mw-redirect" title="Code repository">code repository</a> in the first place. For example, <a href="Git" title="Git">Git</a> Hooks enable developers to run test scripts before code changes are committed or pushed to the code repository.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> In addition, <a href="Change_impact_analysis" title="Change impact analysis">change impact analysis</a> has been applied to software to predict the impact of a code change on various components of the program, and to supplement test case selection and prioritization.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> <a href="Lint_(software)" title="Lint (software)">Software linters</a> are also often added to commit hooks to ensure consistent coding style, thereby minimizing stylistic issues that can make the software prone to regressions.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Localization">Localization</h2></div>
<p>Many of the techniques used to find the root cause of non-regression software bugs can also be used to debug software regressions, including <a href="Breakpoint" title="Breakpoint">breakpoint debugging</a>, print debugging, and <a href="Program_slicing" title="Program slicing">program slicing</a>. The techniques described below are often used specifically to debug software regressions.
</p>
<div class="mw-heading mw-heading3"><h3 id="Functional_regressions">Functional regressions</h3></div>
<p>A common technique used to localize functional regressions is <a href="Bisection_(software_engineering)" title="Bisection (software engineering)">bisection</a>, which takes both a buggy commit and a previously working commit as input, and tries to find the root cause by doing a binary search on the commits in between.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> <a href="Version_control" title="Version control">Version control</a> systems such as Git and <a href="Mercurial" title="Mercurial">Mercurial</a> provide built-in ways to perform bisection on a given pair of commits.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p><p>Other options include directly associating the result of a regression test with code changes;<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> setting divergence breakpoints;<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> or using incremental <a href="Data-flow_analysis" title="Data-flow analysis">data-flow analysis</a>, which identifies test cases - including failing ones - that are relevant to a set of code changes,<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> among others.
</p>
<div class="mw-heading mw-heading3"><h3 id="Performance_regressions">Performance regressions</h3></div>
<p><a href="Profiling_(computer_programming)" title="Profiling (computer programming)">Profiling</a> measures the performance and resource usage of various components of a program, and is used to generate data useful in debugging performance issues. In the context of software performance regressions, developers often compare the <a href="Call_stack" title="Call stack">call trees</a> (also known as "timelines") generated by profilers for both the buggy version and the previously working version, and mechanisms exist to simplify this comparison.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> <a href="Web_development_tools" title="Web development tools">Web development tools</a> typically provide developers the ability to record these performance profiles.<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup>
</p><p>Logging also helps with performance regression localization, and similar to call trees, developers can compare systematically-placed performance logs of multiple versions of the same software.<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup> A tradeoff exists when adding these performance logs, as adding many logs can help developers pinpoint which portions of the software are regressing at smaller granularities, while adding only a few logs will also reduce overhead when executing the program.<sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup>
</p><p>Additional approaches include writing performance-aware unit tests to help with localization,<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup> and ranking subsystems based on performance counter deviations.<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup> Bisection can also be repurposed for performance regressions by considering commits that perform below (or above) a certain baseline value as buggy, and taking either the left or the right side of the commits based on the results of this comparison.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Software_rot" title="Software rot">Software rot</a></li>
<li><a href="Software_aging" title="Software aging">Software aging</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-wong-issre-97-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-wong-issre-97_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFWongHorganLondonAgrawal1997" class="citation book cs1">Wong, W. Eric; Horgan, J.R.; London, Saul; Agrawal, Hira (1997). "A Study of Effective Regression Testing in Practice". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/630875"><i>Proceedings of the Eighth International Symposium on Software Reliability Engineering (ISSRE 97)</i></a>. IEEE. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FISSRE.1997.630875">10.1109/ISSRE.1997.630875</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-8186-8120-9</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:2911517">2911517</a>.</cite></span>
</li>
<li id="cite_note-ibm-locating-bugs-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-ibm-locating-bugs_2-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFYehudaiTyszberowiczNir2007" class="citation conference cs1">Yehudai, Amiram; Tyszberowicz, Shmuel; Nir, Dor (2007). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://link.springer.com/chapter/10.1007/978-3-540-77966-7_18#:~:text=Abstract,patch%20causes%20the%20regression%20bug."><i>Locating Regression Bugs</i></a></span>. <a rel="nofollow" class="external text" href="https://www.research.ibm.com/haifa/conferences/hvc2017/previous.shtml">Haifa Verification Conference</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-3-540-77966-7_18">10.1007/978-3-540-77966-7_18</a><span class="reference-accessdate">. Retrieved <span class="nowrap">10 March</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFShangHassanNasserFlora2014" class="citation journal cs1">Shang, Weiyi; Hassan, Ahmed E.; Nasser, Mohamed; Flora, Parminder (11 December 2014). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210113231136/https://sail.cs.queensu.ca/Downloads/ICPE2015_AutomatedDetectionofPerformanceRegressionsUsingRegressionModelsOnClusteredPerformanceCounters.pdf#page=1">"Automated Detection of Performance Regressions Using Regression Models on Clustered Performance Counters"</a> <span class="cs1-format">(PDF)</span>. Archived from <a rel="nofollow" class="external text" href="https://sail.cs.queensu.ca/Downloads/ICPE2015_AutomatedDetectionofPerformanceRegressionsUsingRegressionModelsOnClusteredPerformanceCounters.pdf#page=1">the original</a> <span class="cs1-format">(PDF)</span> on 13 January 2021<span class="reference-accessdate">. Retrieved <span class="nowrap">22 December</span> 2019</span>.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite journal}}</code>: </span><span class="cs1-visible-error citation-comment">Cite journal requires <code class="cs1-code">|journal=</code> (help)</span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFHenry2008" class="citation book cs1">Henry, Jean-Jacques Pierre (2008). <i>The Testing Network: An Integral Approach to Test Activities in Large Software Projects</i>. Springer Science & Business Media. p. 74. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-3540785040</bdi>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFRichardsonGwaltney,_William_Jr2006" class="citation book cs1">Richardson, Jared; Gwaltney, William Jr (2006). <a rel="nofollow" class="external text" href="https://archive.org/details/shipitpracticalg0000rich/page/32"><i>Ship It! A Practical Guide to Successful Software Projects</i></a>. Raleigh, NC: The Pragmatic Bookshelf. pp. <a rel="nofollow" class="external text" href="https://archive.org/details/shipitpracticalg0000rich/page/32">32, 193</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-9745140-4-8</bdi>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFLeungWhite1990" class="citation book cs1">Leung, Hareton K.N.; White, Lee (November 1990). "A study of integration testing and software regression at the integration level". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/131377"><i>Proceedings of the International Conference on Software Maintenance</i></a>. San Diego, CA, USA: IEEE. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICSM.1990.131377">10.1109/ICSM.1990.131377</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-8186-2091-9</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:62583582">62583582</a>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite id="CITEREFRothermelHarroldDedhia2000" class="citation journal cs1">Rothermel, Gregg; Harrold, Mary Jean; Dedhia, Jeinay (2000). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://onlinelibrary.wiley.com/doi/abs/10.1002/1099-1689(200006)10:2%3C77::AID-STVR197%3E3.0.CO;2-E">"Regression test selection for C++ software"</a></span>. <i>Software Testing, Verification and Reliability</i>. <b>10</b> (2): <span class="nowrap">77–</span>109. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2F1099-1689%28200006%2910%3A2%3C77%3A%3AAID-STVR197%3E3.0.CO%3B2-E">10.1002/1099-1689(200006)10:2<77::AID-STVR197>3.0.CO;2-E</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1099-1689">1099-1689</a>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFWeyukerVokolos2000" class="citation journal cs1">Weyuker, E.J.; Vokolos, F.I. (December 2000). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/888628">"Experience with performance testing of software systems: issues, an approach, and case study"</a></span>. <i>IEEE Transactions on Software Engineering</i>. <b>26</b> (12): <span class="nowrap">1147–</span>1156. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F32.888628">10.1109/32.888628</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1939-3520">1939-3520</a>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFDalyBrownIngoO'Leary2020" class="citation book cs1">Daly, David; Brown, William; Ingo, Henrik; O'Leary, Jim; Bradford, David (20 April 2020). "The Use of Change Point Detection to Identify Software Performance Regressions in a Continuous Integration System". <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/3358960.3375791"><i>Proceedings of the International Conference on Performance Engineering</i></a>. Association for Computing Machinery. pp. <span class="nowrap">67–</span>75. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3358960.3375791">10.1145/3358960.3375791</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-6991-6</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:211677818">211677818</a>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite id="CITEREFNistorJiangTan2013" class="citation book cs1">Nistor, Adrian; Jiang, Tian; Tan, Lin (May 2013). "Discovering, reporting, and fixing performance bugs". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/6624035"><i>Proceedings of the Working Conference on Mining Software Repositories (MSR)</i></a>. pp. <span class="nowrap">237–</span>246. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMSR.2013.6624035">10.1109/MSR.2013.6624035</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4673-2936-1</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:12773088">12773088</a>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFAgarwalAgrawal2014" class="citation journal cs1">Agarwal, Pragya; Agrawal, Arun Prakash (17 September 2014). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/2659118.2659125">"Fault-localization techniques for software systems: a literature review"</a></span>. <i>ACM SIGSOFT Software Engineering Notes</i>. <b>39</b> (5): <span class="nowrap">1–</span>8. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2659118.2659125">10.1145/2659118.2659125</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0163-5948">0163-5948</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:12101263">12101263</a>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks">"Git - Git Hooks"</a>. <i>git-scm.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">7 November</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite id="CITEREFOrsoApiwattanapongHarrold2003" class="citation journal cs1">Orso, Alessandro; Apiwattanapong, Taweesup; Harrold, Mary Jean (1 September 2003). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/949952.940089">"Leveraging field data for impact analysis and regression testing"</a></span>. <i>ACM SIGSOFT Software Engineering Notes</i>. <b>28</b> (5): <span class="nowrap">128–</span>137. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F949952.940089">10.1145/949952.940089</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0163-5948">0163-5948</a>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite id="CITEREFQuAcharyaRobinson2012" class="citation book cs1">Qu, Xiao; Acharya, Mithun; Robinson, Brian (September 2012). "Configuration selection using code change impact analysis for regression testing". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/6405263"><i>Proceedings of the International Conference on Software Maintenance</i></a>. pp. <span class="nowrap">129–</span>138. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICSM.2012.6405263">10.1109/ICSM.2012.6405263</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4673-2312-3</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:14928793">14928793</a>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite id="CITEREFTómasdóttirAnichevan_Deursen2017" class="citation book cs1">Tómasdóttir, Kristín Fjóla; Aniche, Mauricio; van Deursen, Arie (October 2017). "Why and how JavaScript developers use linters". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/8115668"><i>Proceedings of the International Conference on Automated Software Engineering</i></a>. pp. <span class="nowrap">578–</span>589. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FASE.2017.8115668">10.1109/ASE.2017.8115668</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-5386-2684-9</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:215750004">215750004</a>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite id="CITEREFGross1997" class="citation book cs1">Gross, Thomas (10 September 1997). "Bisection Debugging". <a rel="nofollow" class="external text" href="https://ep.liu.se/en/conference-article.aspx?series=ecp&issue=1&Article_No=15"><i>Proceedings of the International Workshop on Automatic Debugging</i></a>. Linkøping University Electronic Press. pp. <span class="nowrap">185–</span>191.</cite></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://git-scm.com/docs/git-bisect">"Git - git-bisect Documentation"</a>. <i>git-scm.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">7 November</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenic.com/mercurial/hg.1.html">"hg - bisect"</a>. <i>www.selenic.com</i>. Mercurial<span class="reference-accessdate">. Retrieved <span class="nowrap">7 November</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.mit.edu/6.005/www/fa15/classes/11-debugging/">"Reading 11: Debugging"</a>. <i>web.mit.edu</i>. MIT.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite id="CITEREFBuhseWeiZangMilicevic2019" class="citation book cs1">Buhse, Ben; Wei, Thomas; Zang, Zhiqiang; Milicevic, Aleksandar; Gligoric, Milos (May 2019). "VeDebug: Regression Debugging Tool for Java". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/8802682"><i>Proceedings of the International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)</i></a>. pp. <span class="nowrap">15–</span>18. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICSE-Companion.2019.00027">10.1109/ICSE-Companion.2019.00027</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-7281-1764-5</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:174799830">174799830</a>.</cite></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><cite id="CITEREFTahaThebautLiu1989" class="citation book cs1">Taha, A.-B.; Thebaut, S.M.; Liu, S.-S. (September 1989). "An approach to software fault localization and revalidation based on incremental data flow analysis". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/65142"><i>Proceedings of the Annual International Computer Software & Applications Conference</i></a>. IEEE. pp. <span class="nowrap">527–</span>534. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FCMPSAC.1989.65142">10.1109/CMPSAC.1989.65142</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-8186-1964-3</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:41978046">41978046</a>.</cite></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><cite id="CITEREFOcarizaZhao2021" class="citation journal cs1">Ocariza, Frolin S.; Zhao, Boyang (2021). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://onlinelibrary.wiley.com/doi/abs/10.1002/stvr.1750">"Localizing software performance regressions in web applications by comparing execution timelines"</a></span>. <i>Software Testing, Verification and Reliability</i>. <b>31</b> (5): e1750. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2Fstvr.1750">10.1002/stvr.1750</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1099-1689">1099-1689</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:225416138">225416138</a>.</cite></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.chrome.com/docs/devtools/evaluate-performance/">"Analyze runtime performance"</a>. <i>Chrome Developers</i>. Google<span class="reference-accessdate">. Retrieved <span class="nowrap">7 November</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium/evaluate-performance/reference">"Performance analysis reference - Microsoft Edge Development"</a>. <i>docs.microsoft.com</i>. Microsoft<span class="reference-accessdate">. Retrieved <span class="nowrap">7 November</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><cite id="CITEREFYaoB._de_PáduaShangSporea2018" class="citation book cs1">Yao, Kundi; B. de Pádua, Guilherme; Shang, Weiyi; Sporea, Steve; Toma, Andrei; Sajedi, Sarah (30 March 2018). "Log4Perf: Suggesting Logging Locations for Web-based Systems' Performance Monitoring". <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/3184407.3184416"><i>Proceedings of the International Conference on Performance Engineering</i></a>. Association for Computing Machinery. pp. <span class="nowrap">127–</span>138. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3184407.3184416">10.1145/3184407.3184416</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-5095-2</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:4557038">4557038</a>.</cite></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><cite id="CITEREFLiShangAdamsSayagh2020" class="citation journal cs1">Li, Heng; Shang, Weiyi; Adams, Bram; Sayagh, Mohammed; Hassan, Ahmed E. (30 January 2020). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/8976297">"A Qualitative Study of the Benefits and Costs of Logging from Developers' Perspectives"</a></span>. <i>IEEE Transactions on Software Engineering</i>. <b>47</b> (12): <span class="nowrap">2858–</span>2873. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2020.2970422">10.1109/TSE.2020.2970422</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:213679706">213679706</a>.</cite></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><cite id="CITEREFHegerHappeFarahbod2013" class="citation book cs1">Heger, Christoph; Happe, Jens; Farahbod, Roozbeh (21 April 2013). "Automated root cause isolation of performance regressions during software development". <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/2479871.2479879"><i>Proceedings of the International Conference on Performance Engineering</i></a>. Association for Computing Machinery. pp. <span class="nowrap">27–</span>38. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2479871.2479879">10.1145/2479871.2479879</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-1636-1</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:2593603">2593603</a>.</cite></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><cite id="CITEREFMalikAdamsHassan2010" class="citation book cs1">Malik, Haroon; Adams, Bram; Hassan, Ahmed E. (November 2010). "Pinpointing the Subsystems Responsible for the Performance Deviations in a Load Test". <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/5635038"><i>Proceedings of the International Symposium on Software Reliability Engineering</i></a>. pp. <span class="nowrap">201–</span>210. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FISSRE.2010.43">10.1109/ISSRE.2010.43</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4244-9056-1</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:17306870">17306870</a>.</cite></span>
</li>
</ol></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-23" href="https://en.wikipedia.org/wiki/?title=Software_regression&oldid=1291800130">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>